home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / dev / devNull.c < prev    next >
C/C++ Source or Header  |  1992-12-18  |  3KB  |  135 lines

  1. /* 
  2.  * devNull.c --
  3.  *
  4.  *    Stubs to implement /dev/null.  (For a while NullProc would do!)
  5.  *    These routines make sure that they drop all data headed
  6.  *    for the void, and that they never return any data from the void.
  7.  *
  8.  * Copyright 1987 Regents of the University of California
  9.  * All rights reserved.
  10.  */
  11.  
  12. #ifndef lint
  13. static char rcsid[] = "$Header: /cdrom/src/kernel/Cvsroot/kernel/dev/devNull.c,v 9.1 90/01/05 13:16:58 ouster Exp $ SPRITE (Berkeley)";
  14. #endif not lint
  15.  
  16.  
  17. #include "sprite.h"
  18. #include "fs.h"
  19.  
  20.  
  21. /*
  22.  *----------------------------------------------------------------------
  23.  *
  24.  *  Dev_NullRead --
  25.  *
  26.  *    Return zero bytes read and SUCCESS.
  27.  *
  28.  * Results:
  29.  *    A standard Sprite return status.
  30.  *
  31.  * Side effects:
  32.  *    None.
  33.  *
  34.  *----------------------------------------------------------------------
  35.  */
  36. /*ARGSUSED*/
  37. ReturnStatus
  38. Dev_NullRead(devicePtr, readPtr, replyPtr)
  39.     Fs_Device *devicePtr;
  40.     Fs_IOParam    *readPtr;    /* Read parameter block */
  41.     Fs_IOReply    *replyPtr;    /* Return length and signal */ 
  42. {
  43.     replyPtr->length = 0;
  44.     return(SUCCESS);
  45. }
  46.  
  47. /*
  48.  *----------------------------------------------------------------------
  49.  *
  50.  *  Dev_NullWrite --
  51.  *
  52.  *    Claim that the bytes have been written and return SUCCESS.
  53.  *
  54.  * Results:
  55.  *    A standard Sprite return status.
  56.  *
  57.  * Side effects:
  58.  *    None.
  59.  *
  60.  *----------------------------------------------------------------------
  61.  */
  62. /*ARGSUSED*/
  63. ReturnStatus
  64. Dev_NullWrite(devicePtr, writePtr, replyPtr)
  65.     Fs_Device *devicePtr;
  66.     Fs_IOParam    *writePtr;    /* Standard write parameter block */
  67.     Fs_IOReply    *replyPtr;    /* Return length and signal */
  68. {
  69.     replyPtr->length = writePtr->length;
  70.     return(SUCCESS);
  71. }
  72.  
  73. /*
  74.  *----------------------------------------------------------------------
  75.  *
  76.  * Dev_NullIOControl --
  77.  *
  78.  *    This procedure handles IOControls for /dev/null and other
  79.  *    devices.  It refuses all IOControls except for a few of
  80.  *    the generic ones, for which it does nothing.
  81.  *
  82.  * Results:
  83.  *    A standard Sprite return status.
  84.  *
  85.  * Side effects:
  86.  *    None.
  87.  *
  88.  *----------------------------------------------------------------------
  89.  */
  90.  
  91. /* ARGSUSED */
  92. ReturnStatus
  93. Dev_NullIOControl(devicePtr, ioctlPtr, replyPtr)
  94.     Fs_Device            *devicePtr;
  95.     Fs_IOCParam        *ioctlPtr;
  96.     Fs_IOReply        *replyPtr;
  97. {
  98.     if ((ioctlPtr->command == IOC_GET_FLAGS)
  99.         || (ioctlPtr->command == IOC_SET_FLAGS)
  100.         || (ioctlPtr->command == IOC_SET_BITS)
  101.         || (ioctlPtr->command == IOC_CLEAR_BITS)) {
  102.     return SUCCESS;
  103.     }
  104.     return GEN_NOT_IMPLEMENTED;
  105. }
  106.  
  107. /*
  108.  *----------------------------------------------------------------------
  109.  *
  110.  * Dev_NullSelect --
  111.  *
  112.  *    This procedure handles selects for /dev/null and other
  113.  *    devices that are always ready.
  114.  *
  115.  * Results:
  116.  *    The device is indicated to be readable and writable.
  117.  *
  118.  * Side effects:
  119.  *    None.
  120.  *
  121.  *----------------------------------------------------------------------
  122.  */
  123.  
  124. /* ARGSUSED */
  125. ReturnStatus
  126. Dev_NullSelect(devicePtr, readPtr, writePtr, exceptPtr)
  127.     Fs_Device    *devicePtr;    /* Ignored. */
  128.     int    *readPtr;        /* Read bit to clear if not readable */
  129.     int    *writePtr;        /* Write bit to clear if not readable */
  130.     int    *exceptPtr;        /* Except bit to clear if not readable */
  131. {
  132.     *exceptPtr = 0;
  133.     return(SUCCESS);
  134. }
  135.